-use std::collections::BTreeMap;
+use std::collections::{BTreeMap, HashMap};
use std::mem;
use std::rc::Rc;
dependencies: &[Dependency],
) -> CargoResult<FeatureMap> {
use self::FeatureValue::*;
+ let dep_map: HashMap<_, _> = dependencies
+ .iter()
+ .map(|d| (d.name().as_str(), d))
+ .collect();
+
let mut map = BTreeMap::new();
for (feature, list) in features.iter() {
let mut values = vec![];
match val {
Feature(_) => None,
Crate(ref dep_name) | CrateFeature(ref dep_name, _) => {
- dependencies.iter().find(|d| d.name() == *dep_name)
+ dep_map.get(dep_name.as_str())
}
}
};